﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Admin_panel_ThongKe_frmThongKe_BieuMau_01 : System.Web.UI.Page
{
    int _nam = 0;
    BieumauDataContext _db = new BieumauDataContext();

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if(Request.QueryString["nam"]==null)
            Response.Redirect("Dulieuthongke.aspx");
            lblNam.Text =( Convert.ToInt32(Request.QueryString["nam"])-1) + "";
            _nam = Convert.ToInt32(Request.QueryString["nam"]);
            TongHopCoBan(14, 11);
            TongHopTheoDong(15, 11, 2, 6);
            TongHopTheoDong(16, 11, 8, 6);
            duyetAllTextBox(16, 11, "khoa");

            //
            tblCauHinhThongKe tk = _db.tblCauHinhThongKes.Single(p => p.ID == "001");
            lblDonViBaoCao.Text = tk.DonViGui;
            lblDonViNhan.Text = tk.DonViNhan;
            txtGiamDoc.Text = tk.GiamDoc;
            txtNguoiLapBieu.Text = tk.NguoiLapBieu;
            txtDiaDiemKy.Text = tk.NoiGui;
            txtNgayKy.Text = DateTime.Now.Day.ToString();
            txtThangKy.Text = DateTime.Now.Month.ToString();
            txtNamKy.Text = DateTime.Now.Year.ToString();
            //


        }
        catch (Exception ex)
        {
            Response.Redirect("Dulieuthongke.aspx");
        }
    }


    private void duyetAllTextBox(int _soDong, int _soCot, string lenh)
    {
        txtNgayKy.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
        txtThangKy.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
        txtNamKy.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
        if (lenh.Equals("khoa")) // neu lenh là khóa thì khóa
        {
            // đầu tiên khóa các Control phụ
          
            txtNguoiLapBieu.ReadOnly = true;
            txtGiamDoc.ReadOnly = true;
            txtDiaDiemKy.ReadOnly = true;
           
            txtNguoiLapBieu.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
            txtGiamDoc.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
            txtDiaDiemKy.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);

        }

        if (lenh.Equals("backcolor")) // neu la lenh back thi set back cho nó
        {
            // đầu tiên set back các Control phụ
           
            txtNguoiLapBieu.BackColor = System.Drawing.Color.FromArgb(255, 255, 204);
            txtGiamDoc.BackColor = System.Drawing.Color.FromArgb(255, 255, 204);
            txtDiaDiemKy.BackColor = System.Drawing.Color.FromArgb(255, 255, 204);
        }

        // duyet tat các textbox trong bảng
        TextBox tx = null;
        string _tenControl = "", _tenControlTheoDong = "";
        for (int i = 1; i <= _soDong; i++) // vòng lap các dòng
        {
            _tenControlTheoDong = "txt" + i.ToString("D2") + "_"; // lúc này tên control có dạng txt01_
            for (int j = 1; j <= _soCot; j++) // vong lap các cột
            {
                _tenControl = "";// reset lai ten control
                _tenControl = _tenControlTheoDong + j;  // lúc này tên control có dạng txt01_1 
                tx = null; // reset lai bien giữ textbox
                tx = form.FindControl(_tenControl) as TextBox; // tìm textbox với tên đã lấy được
                if (lenh.Equals("khoa"))
                {
                    tx.ReadOnly = true;
                   
                    tx.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);
                }
                if (lenh.Equals("backcolor"))
                    tx.BackColor = System.Drawing.Color.FromArgb(255, 255, 204);

            }
        } // het for

    }


    // thuật toán tổng hợp dữ liệu
    private void TongHopCoBan(int _soDong, int _soCot)
    {
          var _duLieuThongKe = from dulieu in _db.tblBieuMaus 
                           where dulieu.TenBieuMau == "BM_01" && dulieu.NamBaoCao == _nam
                           select dulieu ;
       //   Response.Write("<script language='JavaScript'> alert('"+_duLieuThongKe.Count().ToString()+"'); </script>");
        TextBox tx = null;
        string _tenControl = "", _tenControlTheoDong = "";
        int _ketqua = 0,_solayduoc=0;;
        string[] _arrDuLieuNguon;
        string[] _arrDuLieuTungDong;
       
        for (int i = 1; i <= _soDong; i++) // vòng lap các dòng
        {
           
            _tenControlTheoDong = "txt" + i.ToString("D2") + "_"; // lúc này tên control có dạng txt01_

            for (int j = 1; j <= _soCot; j++) // vong lap các cột
            {
                _tenControl = "";// reset lai ten control
                _tenControl = _tenControlTheoDong + j;  // lúc này tên control có dạng txt01_1 
                tx = null; // reset lai bien giữ textbox
                tx = form.FindControl(_tenControl) as TextBox; // tìm textbox với tên đã lấy được
                _ketqua = 0;
                foreach(tblBieuMau bmtmp in _duLieuThongKe)
                {
                    _arrDuLieuNguon= bmtmp.DuLieu.Split(',');
                    _arrDuLieuTungDong = _arrDuLieuNguon[i+2].Split('-');
                    if(_arrDuLieuTungDong[j-1].Equals(""))
                        _solayduoc = 0;
                    else 
                        _solayduoc=Convert.ToInt32(_arrDuLieuTungDong[j-1]);
                    _ketqua+=_solayduoc;
                }

                tx.Text = _ketqua.ToString();
            }
        }
    }

    // thuật toán tổng hợp theo dòng 
    void TongHopTheoDong(int _thuTuDong,int _soCot, int _thuTuDongDau, int _soDongCanTongHop)
    {
        TextBox txtDong, txtCot;
        string _tenTxtDong = "txt", _tenTxtCot = "txt";
        int _demtmp = 0,_tong=0;
        _tenTxtDong = "txt" + _thuTuDong.ToString("D2")+"_";

        for (int i = 1; i <= _soCot; i++)
        {            
            txtDong = null; // reset lai bien giữ textbox
            txtDong = form.FindControl(_tenTxtDong+i.ToString()) as TextBox; // tìm textbox với tên đã lấy được
            _tong=0;
            _demtmp = _thuTuDongDau;
            for(int j=1;j<=_soDongCanTongHop;j++)
            {
                
                _tenTxtCot = "txt"+_demtmp.ToString("D2")+"_"+i.ToString();
                txtCot = null; // reset lại textbox
                txtCot = form.FindControl(_tenTxtCot) as TextBox;
                _tong += Convert.ToInt32(txtCot.Text);
                _demtmp++;
            }

            txtDong.Text = _tong.ToString();
        }
    }
    

   

    
}